package cn.kust.clock.mapper;

import cn.kust.clock.pojo.dto.LikeDTO;
import cn.kust.clock.pojo.dto.LikeDetailsDTO;
import cn.kust.clock.pojo.entity.Like;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import org.springframework.stereotype.Repository;

import java.util.List;

/**
 * @author YL
 * @data 2022/7/21 11:02
 **/
@Repository
public interface LikeMapper extends BaseMapper<Like> {

    /**
     * 获取点赞总数
     * @param type 点赞类型
     * @param typeId 作品id
     * @return 点赞总数
     */
    Integer getLikeCountByTypeAndTypeId(Integer type, Long typeId);


    /**
     * 根据传入类型id查询热门帖前100
     * @param type id类型
     * @param pageNum 页码
     * @return 热门id列表
     */
    List<Long> selectHotOfHighLike(Integer type, Integer pageNum);

    /**
     * 根据传入的type_id, type, user_id 添加一条点赞记录
     * @param likeDetailsDTO 点赞详细DTO类
     * @return 受影响行数
     */
    Integer insertLikeHistoryByLikeDetailsDTO(LikeDetailsDTO likeDetailsDTO);

    /**
     * 根据点赞id与点赞状态修改点赞信息
     * @param likeDTO 包括type typeId userId status
     * @return 受影响行数
     */
    Integer updateLikeHistoryByLikeDTO(LikeDTO likeDTO);

    /**
     * 查询是否存在这条点赞记录
     * @param likeDTO 包括type typeId userId status
     * @return 记录条数
     */
    Integer selectByLikeDTO(LikeDTO likeDTO);
}
